import fs from 'fs';

// 递归合并函数，保留现有翻译
function mergeTranslations(existing, incoming, path = '') {
  const result = { ...existing };
  
  for (const key in incoming) {
    const currentPath = path ? `${path}.${key}` : key;
    
    // 如果现有翻译中已有该键且不是【待翻译】标记，则保留原翻译
    if (existing.hasOwnProperty(key)) {
      if (typeof existing[key] === 'string' && typeof incoming[key] === 'string') {
        // 如果现有翻译不是待翻译标记，则保留原翻译
        if (!existing[key].includes('【待翻译】')) {
          result[key] = existing[key];
        } else {
          // 如果是待翻译标记，则使用新值（但去除【待翻译】标记）
          result[key] = incoming[key].replace('【待翻译】', '').trim() || incoming[key];
        }
      } else if (typeof existing[key] === 'object' && typeof incoming[key] === 'object' && 
                 existing[key] !== null && incoming[key] !== null) {
        // 递归处理嵌套对象
        result[key] = mergeTranslations(existing[key], incoming[key], currentPath);
      } else {
        // 类型不匹配，使用新值
        result[key] = incoming[key];
      }
    } else {
      // 新增的键值
      if (typeof incoming[key] === 'string') {
        // 去除【待翻译】标记
        result[key] = incoming[key].replace('【待翻译】', '').trim() || incoming[key];
      } else if (typeof incoming[key] === 'object' && incoming[key] !== null) {
        result[key] = mergeTranslations({}, incoming[key], currentPath);
      } else {
        result[key] = incoming[key];
      }
    }
  }
  
  return result;
}

// 导出合并函数供其他脚本使用
export { mergeTranslations };